home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr50 / qbmnus16.zip / VERTSAMP.BAS < prev    next >
BASIC Source File  |  1993-03-14  |  4KB  |  115 lines

  1. DECLARE SUB VerticalMenu (boxstyle%, fc%, bc%, tr%, lc%, row%)
  2. CLS
  3. PRINT STRING$(2080, 219)
  4.  
  5. VerticalMenu 1, 15, 9, 7, 22, 8
  6. '            │  │   │   │  └──┐└───┐
  7. '  boxstyle%─┘  fc% bc% └─tr% lc%  row%
  8. '          ──────────────────────────────────────────
  9. ' Boxstyle:
  10. ' There are five choices of boxstyles (Press F 3 on the Tools Menu
  11. ' to see what they look like.)
  12. '          ──────────────────────────────────────────
  13. ' Fc%:
  14. ' Foreground color (Pick any color from 1 to 15)
  15. '          ──────────────────────────────────────────
  16. ' Bc%:
  17. ' Background color (Pick any color from 1 to 15)
  18. '          ──────────────────────────────────────────
  19. ' Tr%:
  20. ' Location of row for first line of box. (Placing longer menus below
  21. ' rows 12 to 16 will cause them not to properly appear on the screen.)
  22. '          ──────────────────────────────────────────
  23. ' Lc%:
  24. ' Location of first column for first line of box. (Menus are 25 columns
  25. ' wide, placing them near the edge of the screen at column 66 or greater
  26. ' will cause distortion.)
  27. '          ──────────────────────────────────────────
  28. ' Row%:
  29. ' Row% places the widebar menu selector on the first item of the menu
  30. ' (Row% is always one number larger than tr%)
  31.  
  32. SUB VerticalMenu (boxstyle%, fc%, bc%, tr%, lc%, row%)
  33. DIM menu$(0 TO 11)
  34. COLOR fc%, bc%
  35. SELECT CASE boxstyle%
  36. CASE 1
  37. side$ = "│"
  38. menu$(0) = "┌───────────────────────┐"         'box building elements;
  39. menu$(11) = "└───────────────────────┘"        'all elements handled
  40. CASE 2                                         'by menu$
  41. side$ = "║"
  42. menu$(0) = "╔═══════════════════════╗"
  43. menu$(11) = "╚═══════════════════════╝"
  44. CASE 3
  45. side$ = "║"
  46. menu$(0) = "╓───────────────────────╖"
  47. menu$(11) = "╙───────────────────────╜"
  48. CASE 4
  49. side$ = "│"
  50. menu$(0) = "╒═══════════════════════╕"
  51. menu$(11) = "╘═══════════════════════╛"
  52. CASE 5
  53. side$ = "█"
  54. menu$(0) = STRING$(25, 219)
  55. menu$(11) = STRING$(25, 219)
  56. END SELECT
  57. menu$(1) = side$ + "     WASHINGTON        " + side$   'MenuMan has already
  58. menu$(2) = side$ + "     LINCOLN           " + side$   'sized each entry to
  59. menu$(3) = side$ + "     JEFFERSON         " + side$   'provide a full length
  60. menu$(4) = side$ + "     ADAMS             " + side$   'widebar selector
  61. menu$(5) = side$ + "     MONROE            " + side$
  62. menu$(6) = side$ + "     KENNEDY           " + side$
  63. menu$(7) = side$ + "     TRUMAN            " + side$
  64. menu$(8) = side$ + "     JOHNSON           " + side$
  65. menu$(9) = side$ + "     ROOSEVELT         " + side$
  66. menu$(10) = side$ + "     EXIT PROGRAM      " + side$
  67. FOR set = 0 TO 11
  68. LOCATE set + tr%, lc%: COLOR fc%, bc%: PRINT menu$(set)
  69. NEXT
  70. row = row%   ' preset for widebar selector
  71. DO
  72. DO
  73. SELECT CASE row
  74. CASE row%: opt$ = "     WASHINGTON        "
  75. CASE row% + 1: opt$ = "     LINCOLN           "  'sizing also preset for
  76. CASE row% + 2: opt$ = "     JEFFERSON         "  'these entries which are
  77. CASE row% + 3: opt$ = "     ADAMS             "  'needed to reprint entries
  78. CASE row% + 4: opt$ = "     MONROE            "  'after widebar selector moves
  79. CASE row% + 5: opt$ = "     KENNEDY           "  'on to next entry
  80. CASE row% + 6: opt$ = "     TRUMAN            "
  81. CASE row% + 7: opt$ = "     JOHNSON           "
  82. CASE row% + 8: opt$ = "     ROOSEVELT         "
  83. CASE row% + 9: opt$ = "     EXIT PROGRAM      "
  84. END SELECT
  85. LOCATE row, lc% + 1, 0: COLOR bc%, fc%: PRINT opt$
  86. 'prints first entry with widebar selector
  87. keys$ = INKEY$
  88. LOOP WHILE keys$ = ""
  89. keymove = ASC(RIGHT$(keys$, 1))   'interprets scancodes
  90. LOCATE row, lc% + 1, 0: COLOR fc%, bc%: PRINT opt$
  91. 'restores previous entry and color
  92. SELECT CASE keymove
  93. CASE 13
  94. IF row = row% THEN END
  95. IF row = row% + 1 THEN END  'this block of IF statements
  96. IF row = row% + 2 THEN END  'will redirect the menu to perform
  97. IF row = row% + 3 THEN END  'any user defined task within the
  98. IF row = row% + 4 THEN END  'user's program
  99. IF row = row% + 5 THEN END
  100. IF row = row% + 6 THEN END  'Edit out "END"
  101. IF row = row% + 7 THEN END
  102. IF row = row% + 8 THEN END
  103. IF row = row% + 9 THEN END
  104. CASE 72: row = row - 1  'moves widebar selector down 1 row
  105. CASE 80: row = row + 1  'moves widebar selector up 1 row
  106. CASE 71: row = row% + 9 'shortcut keys
  107. CASE 79: row = row% + 9 'shortcut keys
  108. END SELECT
  109. IF row < row% THEN row = row% + 9 ELSE IF row > row% + 9 THEN row = row%
  110. 'sets limits for widebar selector
  111. LOOP
  112. END
  113. END SUB
  114.  
  115.